<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>

  <body>
    <script type="text/javascript">
        /**
         * 知道按规范写根本难不到小友，
         * 眨眼睛特意缩成了一整句给小友增加点理解难度🤣😂🤣
         * 本题两个重点，
         * 1. 正则表达式，这些符号小友应该已经很熟悉了，要注意的无非是括号记得转义，
         * 以及空格为不定数
         * 
         * 2. 转十六进制，先使用parseInt将字符串转十进制数字再使用toString将十进制转十六进制字符串
         * 通过三元表达式进行补零操作，其他字符串操作是很常规的用法
         */
      const rgb2hex = (sRGB) =>
        sRGB.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/)
          ? "#" +
            sRGB
              .match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/)
              .slice(1)
              .map((v) =>
                parseInt(v).toString(16).length == 1
                  ? "0" + parseInt(v).toString(16)
                  : parseInt(v).toString(16)
              )
              .join("")
          : sRGB;

      console.log(rgb2hex("rgb(255, 255, 255)"));
    </script>
  </body>
</html>
